<script>
    // 用来将平铺的数组转树状结构
    /**
     *
    arr = [
      { 'id': '29', 'pid': '',     'name': '总裁办' },
      { 'id': '2c', 'pid': '',     'name': '财务部' },
      { 'id': '2d', 'pid': '2c',   'name': '财务核算部'},
      { 'id': '2f', 'pid': '2c',   'name': '薪资管理部'},
      { 'id': 'd2', 'pid': '',     'name': '技术部'},
      { 'id': 'd3', 'pid': 'd2',   'name': 'Java研发部'}
    ]
    // 输入 arr 输出tree
    // 递归
    // 1. 定义函数，它能从指定的数组中找指定pid的children
        arr2tree(arr, '') ==> [
          { 'id': '29', 'pid': '','name': '总裁办'},
          { 'id': '2c', 'pid': '','name': '财务部' },
          { 'id': 'd2', 'pid': '','name': '技术部'}
        ]
        2. 对结果中的每一个元素，继续找chilren： pid 是当前元素的id。例如 '2c'
         arr2tree(arr,'2c') ===> [
          { 'id': '2d', 'pid': '2c', 'name': '财务核算部'},
          { 'id': '2f', 'pid': '2c', 'name': '薪资管理部'},
         ]
    
    tree = [
      { 'id': '29', 'pid': '',     'name': '总裁办' },
      { 'id': '2c', 'pid': '',     'name': '财务部', children: [
          { 'id': '2d', 'pid': '2c',   'name': '财务核算部'},
          { 'id': '2f', 'pid': '2c',   'name': '薪资管理部'}]
      },
      { 'id': 'd2', 'pid': '',     'name': '技术部', children: [
        { 'id': 'd3', 'pid': 'd2',   'name': 'Java研发部'}]
      }
    ]
    
     */
     const arr = [
      { 'id': '29', 'pid': '',     'name': '总裁办' },
      { 'id': '2c', 'pid': '',     'name': '财务部' },
      { 'id': '2d', 'pid': '2c',   'name': '财务核算部'},
      { 'id': '2f', 'pid': '2c',   'name': '薪资管理部'},
      { 'id': 'd2', 'pid': '',     'name': '技术部'},
      { 'id': 'd3', 'pid': 'd2',   'name': 'Java研发部'}
    ]
    // 在arr数组中，找出pid为第二个参数的元素
    function array2Tree(arr, pid) {
    /* 
    递归函数 : 
    先filter原数组，找log的结果 --> 再forEach新数组找原数组的children --> 循环往复，直到找不到children为止，代码执行结束
    */
      const tree = arr.filter(item => item.pid === pid)
      // { 'id': '29', 'pid': '', 'name': '总裁办', },
      // { 'id': '2c', 'pid': '', 'name': '财务部' },
      // { 'id': 'd2', 'pid': '', 'name': '技术部'},
      tree.forEach(item => {
        item.children = array2Tree(arr, item.id)
      })
    
      return tree
    }
    console.log(array2Tree(arr, ''))
    
    </script>